The present invention relates generally to accelerating client-server transactions across a network. Many typical computer applications use the request-response based messaging scheme for client-server interaction. In this scheme, the client issues a request and then waits for a response from the server before issuing the next request. In certain cases, the server may initiate a request or ‘callback’ message to the client.
A transaction initiated by the client consists of one or more request-response message pairs. When the client and server end-points are separate entities communicating over a network channel, the latency characteristics of the network channel play an important role in the overall transaction time. Typically, Wide Area Networks (WANs) have a larger round-trip-time (RTT) compared to Local Area Networks (LANs). Consequently, it takes a longer time from when a client issues a request to when it receives a response from the server. Furthermore, for transactions including multiple request-response message pairs, because the client issues the next request only after receiving a response to the prior one, the overall transaction time increases due to a larger round-trip-time.
In the case of high latency WANs, overall transaction time can be reduced by modifying the manner in which the transactions are executed by the client. If two requests are independent of each other, the client does not need to wait for the receipt of a response to a first outstanding request before issuing the next request. Generally, there are at least two forms of independence: data independence and timing independence. A pair of requests are data-independent if the contents of the second request are the same regardless of the response message received from the first request. A pair of requests are timing-independent of each other if the second request can be issued without positive acknowledgement of the first request by the server (usually conveyed by the response message). All timing-independent requests are also data-independent, but not vice-versa. Two or more independent request messages may be issued simultaneously or in quick succession by a client, reducing overall time taken to reduce the transaction. However this method is not feasible in all cases as requests are often inter-dependent.
Even in cases where such improvements are possible and independent transactions can be identified, client applications often cannot be easily modified. The source code may be unavailable for legal or commercial reasons; changes to the source code may not be allowed for supportability reasons; or people with the skills needed to change the client application may not be available.
It is therefore desirable for a system and method to decrease the time of client-server transactions without the need to modify applications.